package com.liyiruo.tx.service.main2;

import com.liyiruo.tx.mapper.TableAMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * 数据库没有插入新的数据，数据库还是保持着执行testMain方法之前的状态，没有发生改变。
 * testMain上声明了事务，在执行testB方法时就加入了testMain的事务（当前存在事务，则加入这个事务），
 * 在执行testB方法抛出异常后事务会发生回滚，又testMain和testB使用的同一个事务，
 * 所以事务回滚后testMain和testB中的操作都会回滚，也就使得数据库仍然保持初始状态
 * @author liyiruo
 * @Description
 * @Date 2022/2/18 下午5:11
 */
@Service
public class TestMain2 {

    @Autowired
    private TableAMapper tableAMapper;
    @Autowired
    private TestBe testBe2;

    @Transactional(propagation = Propagation.REQUIRED)
    public void testMain() {
        tableAMapper.addTableA();  //调用A入参a1
        testBe2.testB();    //调用testB
    }
}
